<?php

class Retorno { 

    public $bd_ingres = '';
    public $sequencialTransacao = '';
    public $tipoTransacao = '';
    public $numeroGuiaOperadora = '';
    public $numeroGuiaPrestador = '';
    public $tistrn_con_cod = '';
    public $tistrn_tabela = '';
    public $tistrn_num_ori = '';
    public $tistrn_num_ori_prr = '';
    public $tistrn_dat = '';
    public $numeroGuiaPrestador_tissdt = '';
    public $statusSolicitacao = '';
    public $dataRegistroTransacao = '';
    public $horaRegistroTransacao = '';
    public $origem_registroANS = '';
    public $destino_codigoPrestadorNaOperadora = '';
    public $tisintprr_obs_aut = '';
    public $tisintprr_obs_aut1 = '';
    public $dataAutorizacao = '';
    public $senhaAutorizacao = ''; 
    public $validadeSenha = '';
    public $diasAutorizado = '';
    public $dataProvavelAdmisHosp = '';
    public $tipoAcomodacao = '';
    public $numeroCarteira = '';
    public $nomeBeneficiario = '';
    public $validadeCarteira = ''; 
    public $registroANS = '';
    public $arr_status = array( '1'=>'Autorizado',
                                '2'=>'Em análise',
                                '3'=>'Negado',
                                '4'=>'Aguardando justificativa técnica do solicitante',
                                '5'=>'Aguardando documentação do prestador',
                                '6'=>'Solicitação cancelada',
                                '7'=>'Autorizado parcialmente',);
    public $observacao = '';
    public static $parecer = '[Parecer]:';
    
    public function __construct($bd_ingres) {
        $this->bd_ingres = $bd_ingres; 
    }
    
    public function Processamento($result_xml,$tpo = 'SDT') { 
        try {    
            if($tpo == 'SDT') $this->atualizarRegistrosIngresSDT($result_xml);  
            else if($tpo == 'INT') $this->atualizarRegistrosIngresInternacao($result_xml);
            else if($tpo == 'INT_VNC') $this->atualizarRegistrosIngresInternacaoVinculado($result_xml);
            else if($tpo == 'PRR') $this->atualizarRegistrosIngresProrrogacao($result_xml);
            
            else if($tpo == 'SDT_STA') $this->atualizarStatusSDT($result_xml);
            else if($tpo == 'INT_STA') $this->atualizarStatusINT($result_xml);
            else if($tpo == 'INT_STA_VNC'){
                if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->statusSolicitacao)) // correção das que foram solicitadas na estrutura errada
                    $this->atualizarStatusSDT($result_xml);
                else if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao)) // correção das que foram solicitadas na estrutura errada
                    $this->atualizarStatusINTVinculadoInt($result_xml);
                else
                    $this->atualizarStatusINTVinculado($result_xml); // chamada correta
            }
            else if($tpo == 'PRR_STA') $this->atualizarStatusPRR($result_xml);
            else if($tpo == 'SDT_STA_SEM') $this->atualizarStatusSDTSemGuia($result_xml);
            else if($tpo == 'INT_STA_SEM') $this->atualizarStatusINTSemGuia($result_xml);
            else {
                echo 'Sem Parâmetro $tpo <br>';
                return FALSE;
            }    
            return TRUE;
        } catch (Exception $exc) {
            echo 'Erro ao processar xml de retorno para atualizar registros no ingres <br>';
            return FALSE;
        }
    }
    
    public function atualizarRegistrosIngresSDT($result_xml) {
        
        //echo print_r($result_xml);
        
        if(!isset($result_xml->autorizacaoProcedimento->autorizacaoServico->statusSolicitacao)){
            echo 'Erro: '.$result_xml->autorizacaoProcedimento->mensagemErro->descricaoGlosa.'<br>';  
        } else {
        

            $this->tipoTransacao = $result_xml->cabecalho->identificacaoTransacao->tipoTransacao;
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;
            $this->dataRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->dataRegistroTransacao;
            $this->horaRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->horaRegistroTransacao;
            $this->origem_registroANS = $result_xml->cabecalho->origem->registroANS;

            if(isset($result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora))
                $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora;

            if(isset($result_xml->cabecalho->destino->identificacaoPrestador->CNPJ))
                $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->CNPJ;

            //$this->registroANS = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->registroANS;
            $this->statusSolicitacao = $result_xml->autorizacaoProcedimento->autorizacaoServico->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->numeroGuiaOperadora;

            $this->numeroCarteira = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosBeneficiario->validadeCarteira;

            if(isset($result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->senha;
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->dataValidadeSenha))
                $this->validadeSenha = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoServico->observacao))
                $this->observacao = $result_xml->autorizacaoProcedimento->autorizacaoServico->observacao;

            $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr, tistrn_dat 
                    FROM tistrn 
                    WHERE tistrn_num = " . $this->sequencialTransacao . ""; 
            echo $sql.'<br>';
            $result = odbc_exec($this->bd_ingres, $sql);
            while (odbc_fetch_row($result)) {
                $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
            }

            if ($this->tipoTransacao == 'CANCELAMENTO_GUIA_RECIBO') {

            } else if ($this->tipoTransacao == 'SITUACAO_ELEGIBILIDADE') {

            } else if ($this->tipoTransacao == 'PROTOCOLO_RECEBIMENTO') {

            } else if ($this->tipoTransacao == 'RESPOSTA_SOLICITACAO') {

                $servicoAutorizado = $result_xml->autorizacaoProcedimento->autorizacaoServico->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                //echo ' TOTAL -> '.$total_proc;
                //print_r($servicoAutorizado);  

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                // gambiarra para não negar, depois retirar isso
                $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
                // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
                if($cancelar == TRUE) $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
                
                if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // autorizado negado e cancelado
                    $qtd_neg = 0;
                    foreach($servicoAutorizado as $proc){

                        $codigo = $proc->procedimento->codigoProcedimento;
                        $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                        $tipoTabela = $proc->procedimento->codigoTabela;
                        $quantidadeAutorizada = $proc->quantidadeAutorizada;
                        $valorAutorizado = 0;
                        $descricaoGlosa = '';
                        
                        if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                            
                        if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado; 


                        if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                            foreach($proc->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else if(isset($proc->motivosNegativa->motivoNegativa)){
                            $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                        }else if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa)){
                            if(is_array($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                                foreach($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                    $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                                }
                            }else{ 
                                if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa))
                                    $descricaoGlosa .= $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa.'; ';
                            } 
                        }
                        $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                        // $this->statusSolicitacao == 2

                        if ($tipoTabela == 95 || $tipoTabela == 19 || $tipoTabela == 20) {
                            if($quantidadeAutorizada > 0) {
                                $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'A', tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                                if($valorAutorizado > 0) $insert_sql.=" ,tissdtopmsol_vlr_uni_aut = " . $valorAutorizado . "";
                            } else if($quantidadeAutorizada == 0){
                                $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'N' , tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                            }

                            $insert_sql .= " WHERE tissdtopmsol_cod = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtopmsol_sta <> 'C' ";
                            $insert_sql .= " AND tissdtopmsol_nom LIKE '%".$nome."%' ";
                        
                        } else {
                            if($quantidadeAutorizada > 0) { 
                                $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'A', tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                            } else if($quantidadeAutorizada == 0){
                                $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'N' , tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                            }

                            $insert_sql .= " WHERE tissdtpcd_cod_pcd_sol = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtpcd_sta <> 'C'";
                            //$insert_sql .= " AND tissdtpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                        }
                        echo $insert_sql.'<br>';
                        $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                        //$commit = odbc_commit($this->bd_ingres);
                        $insert_sql = '';
                        
                    }
                    
                    // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                    if($qtd_neg == 0) $this->statusSolicitacao = 3; 
                }

                if(($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // negado cancelado

                    $negado = "UPDATE tissdt SET tissdt_sta = 'N', tissdt_sta_xml = 1 ";
                    if (strlen($this->numeroGuiaOperadora) >  0) {
                        $negado .= " ,tissdt_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                    }
                    if (strlen($this->senhaAutorizacao) > 0) {
                        $negado .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                    }

                    //if (strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $negado .= ",tissdt_obs='" . $this->observacao . "' ";
                    //}
                    
                    if (strlen($this->numeroGuiaPrestador) > 0) {
                        $negado .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " ";
                    } else {
                        $negado .= " WHERE tissdt_num = " . $this->tistrn_num_ori . " AND con_cod = " . $this->tistrn_con_cod . " ";
                    }
                    echo $negado.'<br>';
                    $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    
                    
                    $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "'
                                    WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";

                    if(strlen($this->numeroGuiaPrestador) > 0){ 
                        $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";        
                    } else {
                        $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                    }
                    echo $updTistrn.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                    //$commit = odbc_commit($this->bd_ingres);
                        
                    $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);

                } else if($this->statusSolicitacao == 1) { // autorizado

                    $UPDATE_operadora = "UPDATE tissdt SET tissdt_sta = 'A', tissdt_sta_xml = 1, tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                    if (strlen($this->numeroGuiaOperadora) > 0) {
                        $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                    }

                    if (strlen($this->dataAutorizacao) > 0) {
                        $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                        $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                    }

                    if (strlen($this->validadeSenha) > 0) {
                        $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                        $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                    }
                    /*
                    if (strlen($this->validadeCarteira) > 0) {
                        $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                        $UPDATE_operadora .= ",tissdt_dat_vld='" . $this->validadeCarteira . "'";
                    }
                    */
                    if (strlen($this->senhaAutorizacao) > 0) {
                        $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                    }
                    
                    //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                    //}

                    $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";
                    echo $UPDATE_operadora.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                    //$commit = odbc_commit($this->bd_ingres);

                    $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                    WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num_ori = " . $this->numeroGuiaPrestador . " 
                                    AND tistrn_num = " . $this->sequencialTransacao . " ";
                    echo $updTistrn.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                    
                } else{ // so atualiza dados da guia, mas não muda status
                    
                    $UPDATE_operadora = "UPDATE tissdt SET tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                    if (strlen($this->numeroGuiaOperadora) > 0) {
                        $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                    }

                    if (strlen($this->dataAutorizacao) > 0) {
                        $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                        $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                    }

                    if (strlen($this->validadeSenha) > 0) {
                        $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                        $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                    }
                    
                    if (strlen($this->senhaAutorizacao) > 0) {
                        $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                    }
                    
                    //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                    //}
                    
                    $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";
                    echo $UPDATE_operadora.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                }
            }
        }
    }
    
    public function atualizarRegistrosIngresInternacao($result_xml) { 
        
        //echo print_r($result_xml);
        
        
        $this->tipoTransacao = $result_xml->cabecalho->identificacaoTransacao->tipoTransacao;
        $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;
        $this->dataRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->dataRegistroTransacao;
        $this->horaRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->horaRegistroTransacao;
        $this->origem_registroANS = $result_xml->cabecalho->origem->registroANS;
        
        if(isset($result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora))
            $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora;
        
        if(isset($result_xml->cabecalho->destino->identificacaoPrestador->CNPJ))
            $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->CNPJ;
        
        //$this->registroANS = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->registroANS;
        $this->statusSolicitacao = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao;
        $this->numeroGuiaPrestador = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
        $this->numeroGuiaOperadora = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;
        
         
        $this->numeroCarteira = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
        $this->nomeBeneficiario = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
        //$this->validadeCarteira = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosBeneficiario->validadeCarteira;
        
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
            $this->dataAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
        $this->senhaAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->senha;
        $this->validadeSenha = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;
        
        $this->dataProvavelAdmisHosp = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->dataProvavelAdmissao;
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->tipoAcomodacaoAutorizada))
            $this->tipoAcomodacao = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->tipoAcomodacaoAutorizada;
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->qtdDiariasAutorizadas))
            $this->diasAutorizado = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->qtdDiariasAutorizadas;
        
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->observacao))
            $this->observacao = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->observacao;
        
        $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat 
                FROM tistrn 
                WHERE tistrn_num = " . $this->sequencialTransacao . ""; 
        echo $sql.'<br>';
        $result = odbc_exec($this->bd_ingres, $sql);
        while (odbc_fetch_row($result)) {
            $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
            $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
            $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
            $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
            $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
        }
        
        if ($this->tipoTransacao == 'CANCELAMENTO_GUIA_RECIBO') {
            
        } else if ($this->tipoTransacao == 'SITUACAO_ELEGIBILIDADE') {
            
        } else if ($this->tipoTransacao == 'PROTOCOLO_RECEBIMENTO') {
            
        } else if ($this->tipoTransacao == 'RESPOSTA_SOLICITACAO') { 
            
            $servicoAutorizado = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;
            
            $total_proc = count($servicoAutorizado->servicoAutorizado);
            
            //echo ' TOTAL -> '.$total_proc;
            //print_r($servicoAutorizado);  
            
            if($total_proc > 1){
                $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            if($cancelar == TRUE) $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
                
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){ // autorizado negado cancelado
                $qtd_neg = 0;
                foreach($servicoAutorizado as $key => $proc){
                    
                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0;
                    $descricaoGlosa = '';
                    
                    if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                    
                    if(isset($proc->valorAutorizado))
                        $valorAutorizado = $proc->valorAutorizado;
                    
                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa; 
                    }else if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa)){
                        if(is_array($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa.'; ';
                        } 
                    } 
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);

                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tisintopm SET tisintopm_sta='A', tisintopm_qtd_opm_aut=" . $quantidadeAutorizada . " , tisintopm_vlr_uni_opm_aut = ".$valorAutorizado . ", tisintopm_obs_aut = '" . $descricaoGlosa . "'";
                        }else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tisintopm SET tisintopm_sta='N', tisintopm_qtd_opm_aut=" . $quantidadeAutorizada . ", tisintopm_vlr_uni_opm_aut = " . $valorAutorizado . ", tisintopm_obs_aut = '" . $descricaoGlosa . "'";
                        }

                        $insert_sql .= " WHERE tisintopm_cod_opm_sol='" . $codigo . "' AND tisint_num=" . $this->numeroGuiaPrestador . " AND tisintopm_sta <> 'C'";
                        $insert_sql .= " AND tisintopm_nom_opm_sol LIKE '%".$nome."%' ";
                        
                    } else {

                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tisintpcd SET tisintpcd_sta='A', tisintpcd_qtd_pcd_aut=" . $quantidadeAutorizada . ", tisintpcd_obs_aut = '". $descricaoGlosa . "'";
                        }else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tisintpcd SET tisintpcd_sta='N', tisintpcd_qtd_pcd_aut=" . $quantidadeAutorizada . ", tisintpcd_obs_aut = '". $descricaoGlosa . "'";
                        }

                        $insert_sql .= " WHERE tisintpcd_cod_pcd_sol = " . $codigo . " AND tisint_num=" . $this->numeroGuiaPrestador . " AND tisintpcd_sta<>'C'";
                        //$insert_sql .= " AND tisintpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                        
                    }
                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    //$commit = odbc_commit($this->bd_ingres); 
                    $insert_sql = '';
                    
                    // correção por que unimed manda diasAutorizado zerado, assim pega no procedimento, depois que unimed arrumar tirar esse código
                    if(strlen($this->diasAutorizado) == 0 && $tipoTabela == 18){
                        if($quantidadeAutorizada > 0) $this->diasAutorizado = $quantidadeAutorizada;
                    } 
                    if(strlen($this->diasAutorizado) == 0 || !isset($this->diasAutorizado)) $this->diasAutorizado = $this->procurarDiaria($nome,$quantidadeAutorizada);
                } 
                
                // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                if($qtd_neg == 0) $this->statusSolicitacao = 3; 
            }
            
            
            if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // negado cancelado
  
                $negado = "UPDATE tisint SET tisint_sta='N', tisint_sta_xml = 1";
                
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $negado .= " ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                if($this->numeroGuiaPrestador > 0) {
                    $negado.=" WHERE tisint_num=" . $this->numeroGuiaPrestador . " AND con_cod=" . $this->tistrn_con_cod . " ";
                } 
                else if ($this->tistrn_num_ori > 0) {
                    $negado.=" WHERE tisint_num=" . $this->tistrn_num_ori . " AND con_cod=" . $this->tistrn_con_cod . " ";
                } 
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                //$commit = odbc_commit($this->bd_ingres);
                
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";
                if(strlen($this->numeroGuiaPrestador) > 0){
                    $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";
                } else{
                    $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                } 
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                //$commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
                
           } else if($this->statusSolicitacao == 1 && $cancelar == TRUE){  // autorizado 
                      
                $UPDATE_operadora = "UPDATE tisint SET tisint_sta='A', tisint_sta_xml = 1, tisint_dat_ret='" . date('dmY') . "', tisint_hor_ret='" . date('hi') . "'";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora.=" ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->senhaAutorizacao) > 0) {
                    $this->senhaAutorizacao = (str_replace("'", " ", $this->senhaAutorizacao));
                    $UPDATE_operadora.=",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora.=",tisint_vld_snh='" . $this->validadeSenha . "'"; //  tisint_dat_snh
                }
                /*
                if (empty($this->validadeCarteira) == 0) {
                    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                    $UPDATE_operadora.=",tisint_dat_vld='" . $this->validadeCarteira . "'";
                }
                */
                if (strlen($this->tipoAcomodacao) > 0) {
                    $this->tipoAcomodacao = (str_replace("'", "", $this->tipoAcomodacao));
                    $UPDATE_operadora.=",tisint_tpo_aco_aut='" . $this->tipoAcomodacao . "'";
                }

                if (strlen($this->dataProvavelAdmisHosp) > 0) {
                    $this->dataProvavelAdmisHosp = date("dmY", strtotime($this->dataProvavelAdmisHosp));
                    $UPDATE_operadora.=",tisint_dat_adm_hsp='" . $this->dataProvavelAdmisHosp . "'";
                }

                if (strlen($this->diasAutorizado) > 0) {
                    $UPDATE_operadora.=",tisint_qtd_dia_aut=" . $this->diasAutorizado . "";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao)); 
                    $UPDATE_operadora.=",tisint_dat_aut='" . $this->dataAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                $UPDATE_operadora.=" WHERE tisint_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tisint_sta <> 'C'";
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                //$commit = odbc_commit($this->bd_ingres);
                
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " 
                                AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " 
                                AND tistrn_num  = " . $this->sequencialTransacao . " ";
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                //$commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
                
            } else {
                
                $UPDATE_operadora = "UPDATE tisint SET tisint_dat_ret='" . date('dmY') . "', tisint_hor_ret='" . date('hi') . "'";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora.=" ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->senhaAutorizacao) > 0) {
                    $this->senhaAutorizacao = (str_replace("'", " ", $this->senhaAutorizacao));
                    $UPDATE_operadora.=",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora.=",tisint_vld_snh='" . $this->validadeSenha . "'"; //  tisint_dat_snh
                }

                if (strlen($this->tipoAcomodacao) > 0) {
                    $this->tipoAcomodacao = (str_replace("'", "", $this->tipoAcomodacao));
                    $UPDATE_operadora.=",tisint_tpo_aco_aut='" . $this->tipoAcomodacao . "'";
                }

                if (strlen($this->dataProvavelAdmisHosp) > 0) {
                    $this->dataProvavelAdmisHosp = date("dmY", strtotime($this->dataProvavelAdmisHosp));
                    $UPDATE_operadora.=",tisint_dat_adm_hsp='" . $this->dataProvavelAdmisHosp . "'";
                }

                if (strlen($this->diasAutorizado) > 0) {
                    $UPDATE_operadora.=",tisint_qtd_dia_aut=" . $this->diasAutorizado . "";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao)); 
                    $UPDATE_operadora.=",tisint_dat_aut='" . $this->dataAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                $UPDATE_operadora.=" WHERE tisint_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tisint_sta <> 'C'";
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                //$commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
            }
        }
    }
    
    public function atualizarRegistrosIngresInternacaoVinculado($result_xml){
        //echo print_r($result_xml);
        
        if(!isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao)){
            echo 'Erro: '.$result_xml->autorizacaoProcedimento->mensagemErro->descricaoGlosa.'<br>';  
        } else {
        

            $this->tipoTransacao = $result_xml->cabecalho->identificacaoTransacao->tipoTransacao;
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;
            $this->dataRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->dataRegistroTransacao;
            $this->horaRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->horaRegistroTransacao;
            $this->origem_registroANS = $result_xml->cabecalho->origem->registroANS;

            if(isset($result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora))
                $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora;

            if(isset($result_xml->cabecalho->destino->identificacaoPrestador->CNPJ))
                $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->CNPJ;



            $this->statusSolicitacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;

            $this->numeroCarteira = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosBeneficiario->validadeCarteira;

            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha))
                $this->validadeSenha = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->observacao;

            $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat 
                    FROM tistrn 
                    WHERE tistrn_num = " . $this->sequencialTransacao . ""; 
            echo $sql.'<br>';
            $result = odbc_exec($this->bd_ingres, $sql);
            while (odbc_fetch_row($result)) {
                $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
            }

            if ($this->tipoTransacao == 'CANCELAMENTO_GUIA_RECIBO') {

            } else if ($this->tipoTransacao == 'SITUACAO_ELEGIBILIDADE') {

            } else if ($this->tipoTransacao == 'PROTOCOLO_RECEBIMENTO') {

            } else if ($this->tipoTransacao == 'RESPOSTA_SOLICITACAO') {

                $servicoAutorizado = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                //echo ' TOTAL -> '.$total_proc;
                //print_r($servicoAutorizado);  

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                // gambiarra para não negar, depois retirar isso
                $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
                // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
                if($cancelar == TRUE) $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
                
                if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // autorizado negado e cancelado
                    $qtd_neg = 0;
                    foreach($servicoAutorizado as $proc){

                        $codigo = $proc->procedimento->codigoProcedimento;
                        $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                        $tipoTabela = $proc->procedimento->codigoTabela;
                        $quantidadeAutorizada = $proc->quantidadeAutorizada;
                        $valorAutorizado = 0;
                        $descricaoGlosa = '';
                        
                        if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                        
                        if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado; 


                        if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                            foreach($proc->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else if(isset($proc->motivosNegativa->motivoNegativa)){
                            $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                        }else if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa)){
                            if(is_array($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa->motivoNegativa)){ 
                                foreach($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa->motivoNegativa as $neg){
                                    $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                                }
                            }else{ 
                                if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa))
                                    $descricaoGlosa .= $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa.'; ';
                            } 
                        }
                        $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                        // $this->statusSolicitacao == 2

                        if ($tipoTabela == 95 || $tipoTabela == 19 || $tipoTabela == 20) {
                            if($quantidadeAutorizada > 0) {
                                $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'A', tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                                if($valorAutorizado > 0) $insert_sql.=" ,tissdtopmsol_vlr_uni_aut = " . $valorAutorizado . "";
                            } else if($quantidadeAutorizada == 0){
                                $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'N' , tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                            }

                            $insert_sql .= " WHERE tissdtopmsol_cod = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtopmsol_sta <> 'C'";
                            $insert_sql .= " AND tissdtopmsol_nom LIKE '%".$nome."%' ";
                            
                        } else {
                            if($quantidadeAutorizada > 0) { 
                                $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'A', tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                            } else if($quantidadeAutorizada == 0){
                                $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'N' , tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                            }

                            $insert_sql .= " WHERE tissdtpcd_cod_pcd_sol = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtpcd_sta <> 'C'";
                            //$insert_sql .= " AND tissdtpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                            
                        }
                        echo $insert_sql.'<br>';
                        $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                        //$commit = odbc_commit($this->bd_ingres);
                        $insert_sql = '';
                    }
                    
                    // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                    if($qtd_neg == 0) $this->statusSolicitacao = 3;
                }

                if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // negado cancelado

                    $negado = "UPDATE tissdt SET tissdt_sta = 'N', tissdt_sta_xml = 1 ";
                    if (strlen($this->numeroGuiaOperadora) >  0) {
                        $negado .= " ,tissdt_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                    }
                    if (strlen($this->senhaAutorizacao) > 0) {
                        $negado .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                    }
                    
                    //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $negado .= ",tissdt_obs='" . $this->observacao . "' ";
                    //}
                    
                    if (strlen($this->numeroGuiaPrestador) > 0) {
                        $negado .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " ";
                    } else {
                        $negado .= " WHERE tissdt_num = " . $this->tistrn_num_ori . " AND con_cod = " . $this->tistrn_con_cod . " ";
                    }
                    echo $negado.'<br>';
                    $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                    //$commit = odbc_commit($this->bd_ingres);
                    



                    $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "'
                                    WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";

                    if(strlen($this->numeroGuiaPrestador) > 0){ 
                        $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";        
                    } else {
                        $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                    }
                    echo $updTistrn.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                    //$commit = odbc_commit($this->bd_ingres);
                   
                    $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);

                } else if($this->statusSolicitacao == 1 && $cancelar == TRUE) { // autorizado

                    $UPDATE_operadora = "UPDATE tissdt SET tissdt_sta = 'A', tissdt_sta_xml = 1, tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                    if (strlen($this->numeroGuiaOperadora) > 0) {
                        $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                    }

                    if (strlen($this->dataAutorizacao) > 0) {
                        $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                        $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                    }

                    if (strlen($this->validadeSenha) > 0) {
                        $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                        $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                    }
                    /*
                    if (strlen($this->validadeCarteira) > 0) {
                        $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                        $UPDATE_operadora .= ",tissdt_dat_vld='" . $this->validadeCarteira . "'";
                    }
                    */
                    if (strlen($this->senhaAutorizacao) > 0) {
                        $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                    }
                    
                    //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                    //}
                    
                    $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";
                    // echo $UPDATE_operadora;
                    echo $UPDATE_operadora.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                    //$commit = odbc_commit($this->bd_ingres);

                    
                    $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                    WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num_ori = " . $this->numeroGuiaPrestador . " 
                                    AND tistrn_num = " . $this->sequencialTransacao . " ";
                    echo $updTistrn.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                    
                }else{ // so atualiza dados da guia, mas não muda status
                    
                    $UPDATE_operadora = "UPDATE tissdt SET tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                    if (strlen($this->numeroGuiaOperadora) > 0) {
                        $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                    }

                    if (strlen($this->dataAutorizacao) > 0) {
                        $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                        $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                    }

                    if (strlen($this->validadeSenha) > 0) {
                        $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                        $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                    }
                    
                    if (strlen($this->senhaAutorizacao) > 0) {
                        $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                    }
                    
                    //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                    //}

                    $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";
                    echo $UPDATE_operadora.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                }
            }  
        }
    }
    
    public function atualizarRegistrosIngresProrrogacao($result_xml) {
       
        //echo print_r($result_xml);
        if(!isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao)){
            echo 'Erro: '.$result_xml->autorizacaoProcedimento->mensagemErro->descricaoGlosa.'<br>';  
        } else {
        
            $this->tipoTransacao = $result_xml->cabecalho->identificacaoTransacao->tipoTransacao;
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;
            $this->dataRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->dataRegistroTransacao;
            $this->horaRegistroTransacao = $result_xml->cabecalho->identificacaoTransacao->horaRegistroTransacao;
            $this->origem_registroANS = $result_xml->cabecalho->origem->registroANS;

            if(isset($result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora))
                $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->codigoPrestadorNaOperadora;

            if(isset($result_xml->cabecalho->destino->identificacaoPrestador->CNPJ))
                $this->destino_codigoPrestadorNaOperadora = $result_xml->cabecalho->destino->identificacaoPrestador->CNPJ;

            //$this->registroANS = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosAutorizacao->registroANS;
            $this->statusSolicitacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->autorizacaoProcedimento->autorizacaoServico->dadosBeneficiario->validadeCarteira;

            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;

            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->dataProvavelAdmissao))
                $this->dataProvavelAdmisHosp = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->dataProvavelAdmissao;
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->tipoAcomodacaoAutorizada))
                $this->tipoAcomodacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->tipoAcomodacaoAutorizada;
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->qtdDiariasAutorizadas))
                $this->diasAutorizado = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->qtdDiariasAutorizadas;

            
            if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->observacao;
            
            $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat FROM tistrn WHERE tistrn_num = " . $this->sequencialTransacao . ""; 
            echo $sql.'<br>';
            $result = odbc_exec($this->bd_ingres, $sql);
            while (odbc_fetch_row($result)) {
                $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
            }

            if ($this->tipoTransacao == 'CANCELAMENTO_GUIA_RECIBO') {

            } else if ($this->tipoTransacao == 'SITUACAO_ELEGIBILIDADE') {

            } else if ($this->tipoTransacao == 'PROTOCOLO_RECEBIMENTO') {

            } else if ($this->tipoTransacao == 'RESPOSTA_SOLICITACAO') {

                $servicoAutorizado = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                //echo ' TOTAL -> '.$total_proc;
                //print_r($servicoAutorizado);   

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                // gambiarra para não negar, depois retirar isso
                $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);


                if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // autorizado negado cancelado
                    
                    
                    $qtd_neg = 0;
                    foreach($servicoAutorizado as $proc){

                        $codigo = $proc->procedimento->codigoProcedimento;
                        $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                        $tipoTabela = $proc->procedimento->codigoTabela;
                        $quantidadeAutorizada = $proc->quantidadeAutorizada;
                        $descricaoGlosa = '';
                        $valorAutorizado = 0;
                        $statusSolicitacaoProcedimento = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao; //$proc->statusSolicitacaoProcedimento;
                        
                        
                        if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                        
                        if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                        if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                            foreach($proc->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else if(isset($proc->motivosNegativa->motivoNegativa)){
                            $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                        }else if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa)){
                            if(is_array($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                                foreach($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                    $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                                }
                            }else{ 
                                if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa))
                                    $descricaoGlosa .= $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa.'; ';
                            } 
                        }
                        $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);

                        // correção por que unimed manda diasAutorizado zerado, assim pega no procedimento, depois que unimed arrumar tirar esse código
                        if(strlen($this->diasAutorizado) == 0){
                            if($quantidadeAutorizada > 0) $this->diasAutorizado = $quantidadeAutorizada;
                        } 
                    }
                    
                    // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                    if($qtd_neg == 0) $this->statusSolicitacao = 3;
                }

                if($this->statusSolicitacao == 1) { // autorizado

                    $UPDATE_operadora = "UPDATE tisintprr SET tisintprr_sta='A', tisintprr_sta_xml=9, tisintprr_dat_ret='" . date('dmY') . "', tisintprr_hor_ret='" . date('hi') . "' ";

                    if(strlen($this->diasAutorizado) > 0) {
                        $UPDATE_operadora .= " ,tisintprr_qtd_aut=" . $this->diasAutorizado . " "; 
                    }

                    if(strlen($this->tipoAcomodacao) > 0) {
                        $insert_sql .= " ,tisintprr_tpo_aco_aut='" . $this->tipoAcomodacao . "' ";
                    }

                    if (strlen($this->senhaAutorizacao) > 0) {
                        $UPDATE_operadora .= ",tisintprr_snh='" . $this->senhaAutorizacao . "' ";
                    }
                    
                    //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                    //    $UPDATE_operadora .= ",tisintprr_obs_aut='" . $this->observacao . "' ";
                    //}
                    
                    $UPDATE_operadora .= " WHERE tisint_num = " . $this->tistrn_num_ori . " AND tisintprr_num = " . $this->tistrn_num_ori_prr  . " AND tisintprr_sta <> 'C' ";
                    echo $UPDATE_operadora.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                    //$commit = odbc_commit($this->bd_ingres);

                    $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                            WHERE con_cod = " . $this->tistrn_con_cod . "  
                            AND tistrn_num = " . $this->sequencialTransacao;
                    echo $updTistrn.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    $this->parecer('PRR',$this->tistrn_num_ori ,$this->observacao,$this->tistrn_num_ori_prr);

                } else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE) { // negado cancelado

                    $negado = "UPDATE tisintprr SET tisintprr_sta = 'N', tisintprr_sta_xml = 9, tisintprr_obs_aut='" . $descricaoGlosa . "' ";
                    
                    $negado .= " WHERE tisint_num = " . $this->tistrn_num_ori . " AND tisintprr_num = " . $this->tistrn_num_ori_prr;
                    echo $negado.'<br>';
                    $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                    //$commit = odbc_commit($this->bd_ingres);
                    
                    $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "'  
                                    WHERE con_cod = " . $this->tistrn_con_cod . "  
                                    AND tistrn_num = " . $this->sequencialTransacao;
                    echo $updTistrn.'<br>';
                    $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                    //$commit = odbc_commit($this->bd_ingres);

                    $this->parecer('PRR',$this->tistrn_num_ori ,$this->observacao,$this->tistrn_num_ori_prr);
                }
            }
        }
    }
    
    public function atualizarStatusSDT($result_xml){ 
        
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoServico->statusSolicitacao)){
            echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>';  
        } else {
            
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;

            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoServico->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->validadeCarteira;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->senha;
            if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->dataValidadeSenha))
                $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoServico->observacao;
            
            
            if($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6){  

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat 
                        FROM tistrn 
                        WHERE tistrn_num = " . $this->sequencialTransacao . " AND tistrn_tpo = 'TISSDT' "; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while (odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                    $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
                }
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            /*
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            if($cancelar == TRUE){
       
                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoServico->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
            }
            */
            
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado // autorizado  negado cancelado

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoServico->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                //print_r($servicoAutorizado);
                $qtd_neg = 0;
                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';
                    
                    if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                    
                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // sql 
                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'A', tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                            if($valorAutorizado > 0) $insert_sql.=" ,tissdtopmsol_vlr_uni_aut = " . $valorAutorizado . "";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'N' , tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtopmsol_cod = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtopmsol_sta <> 'C'";
                        $insert_sql .= " AND tissdtopmsol_nom LIKE '%".$nome."%' ";
                        
                    } else {
                        if($quantidadeAutorizada > 0) { 
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'A', tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'N' , tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtpcd_cod_pcd_sol = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtpcd_sta <> 'C'";
                        //$insert_sql .= " AND tissdtpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                    }
                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    $commit = odbc_commit($this->bd_ingres);
                    $insert_sql = '';
                    
                }
                
                // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                if($qtd_neg == 0) $this->statusSolicitacao = 3; 
            }

            // autorizado
            if($this->statusSolicitacao == 1 && $cancelar == TRUE){ // autorizado

                // sql
                $UPDATE_operadora = "UPDATE tissdt SET tissdt_sta = 'A', tissdt_sta_xml = 1, tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                    $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                }
                /*
                if (strlen($this->validadeCarteira) > 0) {
                    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                    $UPDATE_operadora .= ",tissdt_dat_vld='" . $this->validadeCarteira . "'";
                }
                */
                if (strlen($this->senhaAutorizacao) > 0) {
                    $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                //}

                $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";           
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);

                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num_ori = " . $this->numeroGuiaPrestador . " 
                                AND tistrn_num = " . $this->sequencialTransacao . "  and tistrn_tpo like 'TISSDT' ";
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado
                // sql
                $negado = "UPDATE tissdt SET tissdt_sta = 'N', tissdt_sta_xml = 1 ";
                if (strlen($this->numeroGuiaOperadora) >  0) {
                    $negado .= " ,tissdt_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tissdt_obs='" . $this->observacao . "' ";
                //}
                
                if (strlen($this->numeroGuiaPrestador) > 0) {
                    $negado .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " ";
                } else {
                    $negado .= " WHERE tissdt_num = " . $this->tistrn_num_ori . " AND con_cod = " . $this->tistrn_con_cod . " ";
                }
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);
                
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";
                if(strlen($this->numeroGuiaPrestador) > 0){ 
                    $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";        
                } else {
                    $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                }
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
        }
    }
    
    public function atualizarStatusSDTSemGuia($result_xml){
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoServico->statusSolicitacao)){
            echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>';        
        } else {
            
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;

            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoServico->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->validadeCarteira;

            $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoServico->observacao;
            
            // trocar o numero guia prestador do retorno xml pelo numero guia nosso
            $sql = "SELECT tissdt_num, tissdt_dat_emi_gui FROM tissdt 
                    WHERE tissdt_num_gui_prs = " . trim($this->numeroGuiaPrestador) . ""; 
            echo $sql.'<br>';
            $result = odbc_exec($this->bd_ingres, $sql);
            while (odbc_fetch_row($result)) {
                $this->numeroGuiaPrestador = trim(odbc_result($result, 'tissdt_num'));
                $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            /*
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            if($cancelar == TRUE){
                
                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoServico->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
            }
            */
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado // autorizado  negado cancelado

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr, tistrn_dat 
                        FROM tistrn 
                        WHERE tistrn_num = " . $this->sequencialTransacao . " AND tistrn_tpo = 'TISSDT' "; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while (odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                    $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
                }

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoServico->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                //print_r($servicoAutorizado);

                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';

                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // sql 
                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'A', tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                            if($valorAutorizado > 0) $insert_sql.=" ,tissdtopmsol_vlr_uni_aut = " . $valorAutorizado . "";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'N' , tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtopmsol_cod = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtopmsol_sta <> 'C'";
                        $insert_sql .= " AND tissdtopmsol_nom LIKE '%".$nome."%' ";
                        
                    } else {
                        if($quantidadeAutorizada > 0) { 
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'A', tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'N' , tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtpcd_cod_pcd_sol = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtpcd_sta <> 'C'";
                        //$insert_sql .= " AND tissdtpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                        
                    }
                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    $commit = odbc_commit($this->bd_ingres);
                    $insert_sql = '';

                }

            }
            
            // autorizado
            if($this->statusSolicitacao == 1){ // autorizado

                // sql
                $UPDATE_operadora = "UPDATE tissdt SET tissdt_sta = 'A', tissdt_sta_xml = 1, tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                    $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                }
                /*
                if (strlen($this->validadeCarteira) > 0) {
                    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                    $UPDATE_operadora .= ",tissdt_dat_vld='" . $this->validadeCarteira . "'";
                }
                */
                if (strlen($this->senhaAutorizacao) > 0) {
                    $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                //}

                $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";           
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado
                // sql
                $negado = "UPDATE tissdt SET tissdt_sta = 'N', tissdt_sta_xml = 1 ";
                if (strlen($this->numeroGuiaOperadora) >  0) {
                    $negado .= " ,tissdt_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tissdt_obs='" . $this->observacao . "' ";
                //}
                
                if (strlen($this->numeroGuiaPrestador) > 0) {
                    $negado .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " ";
                } else {
                    $negado .= " WHERE tissdt_num = " . $this->tistrn_num_ori . " ";
                }
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
        }
    }

    public function atualizarStatusINT($result_xml){ 
        //print_r($result_xml);exit();
        
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao)){
            if(!isset($result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa)){
                $this->atualizarStatusSDT($result_xml);
            }
            else
                echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>';  
        } else {
        
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;

            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoInternacao->dadosBeneficiario->validadeCarteira;

            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;

            $this->dataProvavelAdmisHosp = $result_xml->situacaoAutorizacao->autorizacaoInternacao->dataProvavelAdmissao;
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->tipoAcomodacaoAutorizada))
                $this->tipoAcomodacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->tipoAcomodacaoAutorizada;        
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->qtdDiariasAutorizadas))
                $this->diasAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->qtdDiariasAutorizadas;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->observacao;
            
            if($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6){ // autorizado negado cancelado

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat 
                    FROM tistrn 
                    WHERE tistrn_num = " . $this->sequencialTransacao . " AND tistrn_tpo = 'TISINT' "; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while (odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                    $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
                }
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            /*
			if($cancelar == TRUE){
                
                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
            }
            */
			
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){ // autorizado negado cancelado

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                
                $qtd_neg = 0;
                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';
                    
                    if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                    
                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // sql
                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = " UPDATE tisintopm SET tisintopm_sta = 'A', tisintopm_qtd_opm_aut=" . $quantidadeAutorizada . " , tisintopm_vlr_uni_opm_aut = ".$valorAutorizado . ", tisintopm_obs_aut = '" . $descricaoGlosa . "'";
                        }else if($quantidadeAutorizada == 0){
                            $insert_sql = " UPDATE tisintopm SET tisintopm_sta = 'N', tisintopm_qtd_opm_aut=" . $quantidadeAutorizada . ", tisintopm_vlr_uni_opm_aut = " . $valorAutorizado . ", tisintopm_obs_aut = '" . $descricaoGlosa . "'";
                        }

                        $insert_sql .= " WHERE tisintopm_cod_opm_sol='" . $codigo . "' AND tisint_num=" . $this->numeroGuiaPrestador . " AND tisintopm_sta <> 'C'";
                        $insert_sql .= " AND tisintopm_nom_opm_sol LIKE '%".$nome."%' ";
	
                        
                    } else {

                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tisintpcd SET tisintpcd_sta='A', tisintpcd_qtd_pcd_aut=" . $quantidadeAutorizada . ", tisintpcd_obs_aut = '". $descricaoGlosa . "'";
                        }else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tisintpcd SET tisintpcd_sta='N', tisintpcd_qtd_pcd_aut=" . $quantidadeAutorizada . ", tisintpcd_obs_aut = '". $descricaoGlosa . "'";
                        }

                        $insert_sql .= " WHERE tisintpcd_cod_pcd_sol = " . $codigo . "  AND tisint_num=" . $this->numeroGuiaPrestador . " AND tisintpcd_sta <> 'C'";
                        //$insert_sql .= " AND tisintpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                        
                    }
                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    $commit = odbc_commit($this->bd_ingres);
                    $insert_sql = '';
                    
                    // correção por que unimed manda diasAutorizado zerado, assim pega no procedimento, depois que unimed arrumar tirar esse código
                    if(strlen($this->diasAutorizado) == 0 && $tipoTabela == 18){
                        if($quantidadeAutorizada > 0) $this->diasAutorizado = $quantidadeAutorizada;
                    }
                    if(strlen($this->diasAutorizado) == 0 || !isset($this->diasAutorizado)) $this->diasAutorizado = $this->procurarDiaria($nome,$quantidadeAutorizada);
                }
                
                
                // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                if($qtd_neg == 0) $this->statusSolicitacao = 3;
                
            }

            // autorizado
            if($this->statusSolicitacao == 1 && $cancelar == TRUE){

                // sql
                $UPDATE_operadora = "UPDATE tisint SET tisint_sta='A', tisint_sta_xml = 1, tisint_dat_ret='" . date('dmY') . "', tisint_hor_ret='" . date('hi') . "'";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora.=" ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->senhaAutorizacao) > 0) {
                    $this->senhaAutorizacao = (str_replace("'", " ", $this->senhaAutorizacao));
                    $UPDATE_operadora.=",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora.=",tisint_vld_snh='" . $this->validadeSenha . "'"; //  tisint_dat_snh
                }
                /*
                if (empty($this->validadeCarteira) == 0) {
                    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                    $UPDATE_operadora.=",tisint_dat_vld='" . $this->validadeCarteira . "'";
                }
                */
                if (strlen($this->tipoAcomodacao) > 0) {
                    $this->tipoAcomodacao = (str_replace("'", "", $this->tipoAcomodacao));
                    $UPDATE_operadora.=",tisint_tpo_aco_aut='" . $this->tipoAcomodacao . "'";
                }

                if (strlen($this->dataProvavelAdmisHosp) > 0) {
                    $this->dataProvavelAdmisHosp = date("dmY", strtotime($this->dataProvavelAdmisHosp));
                    $UPDATE_operadora.=",tisint_dat_adm_hsp='" . $this->dataProvavelAdmisHosp . "'";
                }

                if (strlen($this->diasAutorizado) > 0) {
                    $UPDATE_operadora.=",tisint_qtd_dia_aut=" . $this->diasAutorizado . "";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao)); 
                    $UPDATE_operadora.=",tisint_dat_aut='" . $this->dataAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                $UPDATE_operadora .= " WHERE tisint_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tisint_sta <> 'C'";
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                            WHERE con_cod = " . $this->tistrn_con_cod . " 
                                            AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " 
                                            AND tistrn_num  = " . $this->sequencialTransacao . " ";
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                 
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado cancelado
                // sql
                $negado = "UPDATE tisint SET tisint_sta='N', tisint_sta_xml = 1";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $negado .= " ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                if($this->numeroGuiaPrestador > 0) {
                    $negado.=" WHERE tisint_num=" . $this->numeroGuiaPrestador . " AND con_cod=" . $this->tistrn_con_cod . " ";
                } 
                else if ($this->tistrn_num_ori > 0) {
                    $negado.=" WHERE tisint_num=" . $this->tistrn_num_ori . " AND con_cod=" . $this->tistrn_con_cod . " ";
                } 

                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";
                if(strlen($this->numeroGuiaPrestador) > 0){
                    $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";
                } else{
                    $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                }    
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }  
        }
    }
    
    public function atualizarStatusINTSemGuia($result_xml){
        //print_r($result_xml);exit();
        
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao)){
            if(!isset($result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa)){
                $this->atualizarStatusSDTSemGuia($result_xml);
            }
            else
                echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>';  
        } else {
        
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;

            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoInternacao->dadosBeneficiario->validadeCarteira;

            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;

            $this->dataProvavelAdmisHosp = $result_xml->situacaoAutorizacao->autorizacaoInternacao->dataProvavelAdmissao;
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->tipoAcomodacaoAutorizada))
                $this->tipoAcomodacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->tipoAcomodacaoAutorizada;        
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->qtdDiariasAutorizadas))
                $this->diasAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->qtdDiariasAutorizadas;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->observacao;
            
            // trocar o numero guia prestador do retorno xml pelo numero guia nosso
            $sql = "SELECT tisint_num,tisint_dat_emi_gui FROM tisint 
                    WHERE tisint_num_gui_prs = " . trim($this->numeroGuiaPrestador) . ""; 
            echo $sql.'<br>';
            $result = odbc_exec($this->bd_ingres, $sql);
            while (odbc_fetch_row($result)) {
                $this->numeroGuiaPrestador = trim(odbc_result($result, 'tisint_num'));
                $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tisint_dat_emi_gui'))));
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            /*
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            if($cancelar == TRUE){
                
                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
            }
            */
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){ // autorizado negado cancelado

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat 
                    FROM tistrn 
                    WHERE tistrn_num = " . $this->sequencialTransacao . " AND tistrn_tpo = 'TISINT' "; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while (odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                    $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
                }

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                //print_r($servicoAutorizado);
                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';

                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // sql
                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = " UPDATE tisintopm SET tisintopm_sta = 'A', tisintopm_qtd_opm_aut=" . $quantidadeAutorizada . " , tisintopm_vlr_uni_opm_aut = ".$valorAutorizado . ", tisintopm_obs_aut = '" . $descricaoGlosa . "'";
                        }else if($quantidadeAutorizada == 0){
                            $insert_sql = " UPDATE tisintopm SET tisintopm_sta = 'N', tisintopm_qtd_opm_aut=" . $quantidadeAutorizada . ", tisintopm_vlr_uni_opm_aut = " . $valorAutorizado . ", tisintopm_obs_aut = '" . $descricaoGlosa . "'";
                        }

                        $insert_sql .= " WHERE tisintopm_cod_opm_sol='" . $codigo . "' AND tisint_num=" . $this->numeroGuiaPrestador . " AND tisintopm_sta <> 'C'";
                        $insert_sql .= " AND tisintopm_nom_opm_sol LIKE '%".$nome."%' ";
                        
                    } else {

                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tisintpcd SET tisintpcd_sta='A', tisintpcd_qtd_pcd_aut=" . $quantidadeAutorizada . ", tisintpcd_obs_aut = '". $descricaoGlosa . "'";
                        }else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tisintpcd SET tisintpcd_sta='N', tisintpcd_qtd_pcd_aut=" . $quantidadeAutorizada . ", tisintpcd_obs_aut = '". $descricaoGlosa . "'";
                        }

                        $insert_sql .= " WHERE tisintpcd_cod_pcd_sol = " . $codigo . " AND tisint_num=" . $this->numeroGuiaPrestador . " AND tisintpcd_sta <> 'C'";
                        //$insert_sql .= " AND tisintpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                    }
                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    $commit = odbc_commit($this->bd_ingres);
                    $insert_sql = '';
                    
                    // correção por que unimed manda diasAutorizado zerado, assim pega no procedimento, depois que unimed arrumar tirar esse código
                    if(strlen($this->diasAutorizado) == 0 && $tipoTabela == 18){
                        if($quantidadeAutorizada > 0) $this->diasAutorizado = $quantidadeAutorizada;
                    }
                }

            }
            
            // autorizado
            if($this->statusSolicitacao == 1){

                // sql
                $UPDATE_operadora = "UPDATE tisint SET tisint_sta='A', tisint_sta_xml = 1, tisint_dat_ret='" . date('dmY') . "', tisint_hor_ret='" . date('hi') . "'";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora.=" ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->senhaAutorizacao) > 0) {
                    $this->senhaAutorizacao = (str_replace("'", " ", $this->senhaAutorizacao));
                    $UPDATE_operadora.=",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora.=",tisint_vld_snh='" . $this->validadeSenha . "'"; //  tisint_dat_snh
                }
                /*
                if (empty($this->validadeCarteira) == 0) {
                    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                    $UPDATE_operadora.=",tisint_dat_vld='" . $this->validadeCarteira . "'";
                }
                */
                if (strlen($this->tipoAcomodacao) > 0) {
                    $this->tipoAcomodacao = (str_replace("'", "", $this->tipoAcomodacao));
                    $UPDATE_operadora.=",tisint_tpo_aco_aut='" . $this->tipoAcomodacao . "'";
                }

                if (strlen($this->dataProvavelAdmisHosp) > 0) {
                    $this->dataProvavelAdmisHosp = date("dmY", strtotime($this->dataProvavelAdmisHosp));
                    $UPDATE_operadora.=",tisint_dat_adm_hsp='" . $this->dataProvavelAdmisHosp . "'";
                }

                if (strlen($this->diasAutorizado) > 0) {
                    $UPDATE_operadora.=",tisint_qtd_dia_aut=" . $this->diasAutorizado . "";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao)); 
                    $UPDATE_operadora.=",tisint_dat_aut='" . $this->dataAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                $UPDATE_operadora .= " WHERE tisint_num = " . $this->numeroGuiaPrestador . " AND tisint_sta <> 'C'";
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
                
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado cancelado
                // sql
                $negado = "UPDATE tisint SET tisint_sta='N', tisint_sta_xml = 1";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $negado .= " ,tisint_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tisint_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tisint_obs='" . $this->observacao . "' ";
                //}
                
                if($this->numeroGuiaPrestador > 0) {
                    $negado.=" WHERE tisint_num =" . $this->numeroGuiaPrestador . " ";
                } 
                else if ($this->tistrn_num_ori > 0) {
                    $negado.=" WHERE tisint_num =" . $this->tistrn_num_ori . " ";
                } 
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('INT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }  
        }
    }

    
    public function atualizarStatusINTVinculado($result_xml){
        
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao)){            
            echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>'; 
        } else {
            
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;

            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->validadeCarteira;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
            $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->observacao;
            
            if($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6){  // negado ou cancelado // autorizado  negado cancelado

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr,tistrn_dat 
                        FROM tistrn 
                        WHERE tistrn_num = " . $this->sequencialTransacao . " AND tistrn_tpo = 'TISSDT' "; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while (odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                    $this->tistrn_dat = trim(date("Y-m-d", strtotime(odbc_result($result, 'tistrn_dat'))));
                }
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            /*
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            if($cancelar == TRUE){
                
                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
            }
            */
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado // autorizado  negado cancelado

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                
                $qtd_neg = 0;
                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';
                    
                    if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                    
                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // sql 
                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'A', tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                            if($valorAutorizado > 0) $insert_sql.=" ,tissdtopmsol_vlr_uni_aut = " . $valorAutorizado . "";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'N' , tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtopmsol_cod = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtopmsol_sta <> 'C'";
                        $insert_sql .= " AND tissdtopmsol_nom LIKE '%".$nome."%' ";
                        
                    } else {
                        if($quantidadeAutorizada > 0) { 
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'A', tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'N' , tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtpcd_cod_pcd_sol = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtpcd_sta <> 'C'";
                        //$insert_sql .= " AND tissdtpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                        
                    }

                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    $commit = odbc_commit($this->bd_ingres);
                    $insert_sql = '';

                }
                    
                // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                if($qtd_neg == 0) $this->statusSolicitacao = 3; 
            }

            // autorizado
            if($this->statusSolicitacao == 1 && $cancelar == TRUE){ // autorizado

                // sql
                $UPDATE_operadora = "UPDATE tissdt SET tissdt_sta = 'A', tissdt_sta_xml = 1, tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                    $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                }
                
                //if (strlen($this->validadeCarteira) > 0) {
                //    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                //    $UPDATE_operadora .= ",tissdt_dat_vld='" . $this->validadeCarteira . "'";
                //}
                
                if (strlen($this->senhaAutorizacao) > 0) {
                    $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                //}
                
                $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";           
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);

                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num_ori = " . $this->numeroGuiaPrestador . " 
                                AND tistrn_num = " . $this->sequencialTransacao . "  and tistrn_tpo like 'TISSDT' ";
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado
                // sql
                $negado = "UPDATE tissdt SET tissdt_sta = 'N', tissdt_sta_xml = 1 ";
                if (strlen($this->numeroGuiaOperadora) >  0) {
                    $negado .= " ,tissdt_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tissdt_obs='" . $this->observacao . "' ";
                //}
                
                if (strlen($this->numeroGuiaPrestador) > 0) {
                    $negado .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " ";
                } else {
                    $negado .= " WHERE tissdt_num = " . $this->tistrn_num_ori . " AND con_cod = " . $this->tistrn_con_cod . " ";
                }
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "'
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";

                if(strlen($this->numeroGuiaPrestador) > 0){ 
                    $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";        
                } else {
                    $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                }
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
        }   
    }
    
    
    public function atualizarStatusINTVinculadoInt($result_xml){
        
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao)){            
            echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>'; 
        } else {
            
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;

            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->validadeCarteira;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
            $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->observacao;
            
            if($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6){  // negado ou cancelado // autorizado  negado cancelado

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr 
                        FROM tistrn 
                        WHERE tistrn_num = " . $this->sequencialTransacao . " AND tistrn_tpo = 'TISSDT' "; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while (odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));
                }
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            /*
            // gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed
            if($cancelar == TRUE){
                
                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                $cancelar = $this->gambiarra_erro_opme_generica_unimed($this->numeroGuiaPrestador,$this->statusSolicitacao,$servicoAutorizado);
            }
            */
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado // autorizado  negado cancelado

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }

                //print_r($servicoAutorizado);
                $qtd_neg = 0;
                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';
                    
                    if($quantidadeAutorizada > 0) $qtd_neg = $quantidadeAutorizada;
                    
                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivosNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // sql 
                    if ($tipoTabela == 95 || $tipoTabela == 19  || $tipoTabela == 20) {
                        if($quantidadeAutorizada > 0) {
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'A', tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                            if($valorAutorizado > 0) $insert_sql.=" ,tissdtopmsol_vlr_uni_aut = " . $valorAutorizado . "";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtopmsol SET tissdtopmsol_sta = 'N' , tissdtopmsol_qtd_aut = " . $quantidadeAutorizada . " , tissdtopmsol_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtopmsol_cod = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtopmsol_sta <> 'C'";
                        $insert_sql .= " AND tissdtopmsol_nom LIKE '%".$nome."%' ";
                        
                    } else {
                        if($quantidadeAutorizada > 0) { 
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'A', tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        } else if($quantidadeAutorizada == 0){
                            $insert_sql = "UPDATE tissdtpcd SET tissdtpcd_sta = 'N' , tissdtpcd_qtd_pcd_aut = " . $quantidadeAutorizada . " , tissdtpcd_obs_aut = '". $descricaoGlosa ."'";
                        }

                        $insert_sql .= " WHERE tissdtpcd_cod_pcd_sol = '" . $codigo . "' AND tissdt_num = " . $this->numeroGuiaPrestador . " AND tissdtpcd_sta <> 'C'";
                        //$insert_sql .= " AND tissdtpcd_nom_pcd_sol LIKE '%".$nome."%' ";
                        
                    }

                    echo $insert_sql.'<br>';
                    $up_op = odbc_exec($this->bd_ingres, $insert_sql);
                    $commit = odbc_commit($this->bd_ingres);
                    $insert_sql = '';

                }
                
                // correção unimed quando vem com status de 1 (autorizado) mas nenhum item autorizado, desta form altera de 1 para 3
                if($qtd_neg == 0) $this->statusSolicitacao = 3; 
            }

            // autorizado
            if($this->statusSolicitacao == 1 && $cancelar == TRUE){ // autorizado

                // sql
                $UPDATE_operadora = "UPDATE tissdt SET tissdt_sta = 'A', tissdt_sta_xml = 1, tissdt_dat_ret='" . date('dmY') . "', tissdt_hor_ret = '" . date('hi') . "' ";
                if (strlen($this->numeroGuiaOperadora) > 0) {
                    $UPDATE_operadora .= " , tissdt_num_gui_ope = '" . $this->numeroGuiaOperadora . "'";
                }

                if (strlen($this->dataAutorizacao) > 0) {
                    $this->dataAutorizacao = date("dmY", strtotime($this->dataAutorizacao));
                    $UPDATE_operadora .= " ,tissdt_dat_aut='" . $this->dataAutorizacao . "' ";
                }

                if (strlen($this->validadeSenha) > 0) {
                    $this->validadeSenha = date("dmY", strtotime($this->validadeSenha));
                    $UPDATE_operadora .= ", tissdt_vld_snh = '" . $this->validadeSenha . "'";
                }
                
                //if (strlen($this->validadeCarteira) > 0) {
                //    $this->validadeCarteira = date("dmY", strtotime($this->validadeCarteira));
                //    $UPDATE_operadora .= ",tissdt_dat_vld='" . $this->validadeCarteira . "'";
                //}
                
                if (strlen($this->senhaAutorizacao) > 0) {
                    $UPDATE_operadora .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $UPDATE_operadora .= ",tissdt_obs='" . $this->observacao . "' ";
                //}
                
                $UPDATE_operadora .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " AND tissdt_sta <> 'C' AND fil_cod = 1 AND emp_cod = 1";           
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);

                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num_ori = " . $this->numeroGuiaPrestador . " 
                                AND tistrn_num = " . $this->sequencialTransacao . "  and tistrn_tpo like 'TISSDT' ";
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado ou cancelado
                // sql
                $negado = "UPDATE tissdt SET tissdt_sta = 'N', tissdt_sta_xml = 1 ";
                if (strlen($this->numeroGuiaOperadora) >  0) {
                    $negado .= " ,tissdt_num_gui_ope='" . $this->numeroGuiaOperadora . "' ";
                }
                if (strlen($this->senhaAutorizacao) > 0) {
                    $negado .= ",tissdt_snh='" . $this->senhaAutorizacao . "' ";
                }
                
                //if(strlen($this->observacao) > 0 && strpos($this->observacao,self::$parecer) !== FALSE) {
                //    $negado .= ",tissdt_obs='" . $this->observacao . "' ";
                //}
                
                if (strlen($this->numeroGuiaPrestador) > 0) {
                    $negado .= " WHERE tissdt_num = " . $this->numeroGuiaPrestador . " AND con_cod = " . $this->tistrn_con_cod . " ";
                } else {
                    $negado .= " WHERE tissdt_num = " . $this->tistrn_num_ori . " AND con_cod = " . $this->tistrn_con_cod . " ";
                }
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "'
                                WHERE con_cod = " . $this->tistrn_con_cod . " AND tistrn_num = " . $this->sequencialTransacao . " ";

                if(strlen($this->numeroGuiaPrestador) > 0){ 
                    $updTistrn.= " AND tistrn_num_ori =" . $this->numeroGuiaPrestador . " ";        
                } else {
                    $updTistrn.= " AND tistrn_num_ori =" . $this->tistrn_num_ori . " ";
                }
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);
                
                $this->parecer('SDT',$this->numeroGuiaPrestador,$this->observacao);
                $commit = odbc_commit($this->bd_ingres);
            }
        }   
    }
    
    public function atualizarStatusPRR($result_xml){ 
        
        if(!isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao)){
            if(isset($result_xml->autorizacaoProcedimento->mensagemErro->descricaoGlosa))
                echo 'Erro: '.$result_xml->autorizacaoProcedimento->mensagemErro->descricaoGlosa.'<br>';
            else
                echo 'Erro: '.$result_xml->situacaoAutorizacao->mensagemErro->descricaoGlosa.'<br>';
        } else {
        
            $this->sequencialTransacao = $result_xml->cabecalho->identificacaoTransacao->sequencialTransacao;
                                     
            $this->statusSolicitacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->statusSolicitacao;
            $this->numeroGuiaPrestador = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaPrestador;
            $this->numeroGuiaOperadora = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->numeroGuiaOperadora;


            $this->numeroCarteira = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->numeroCarteira;
            $this->nomeBeneficiario = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosBeneficiario->nomeBeneficiario;
            //$this->validadeCarteira = $result_xml->situacaoAutorizacao->autorizacaoServico->dadosBeneficiario->validadeCarteira;

            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao))
                $this->dataAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataAutorizacao; 
            $this->senhaAutorizacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->senha;
            $this->validadeSenha = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->dadosAutorizacao->dataValidadeSenha;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->dataProvavelAdmissao))
            $this->dataProvavelAdmisHosp = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->dataProvavelAdmissao;
            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->tipoAcomodacaoAutorizada))
                $this->tipoAcomodacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->tipoAcomodacaoAutorizada;
            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->qtdDiariasAutorizadas))
                $this->diasAutorizado = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->qtdDiariasAutorizadas;
            
            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->observacao))
                $this->observacao = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->observacao;
            
            if($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6){ // autorizado negado cancelado

                $sql = "SELECT con_cod,tistrn_tpo,tistrn_num_ori,tistrn_num_ori_prr 
                    FROM tistrn 
                    WHERE tistrn_num = " . $this->sequencialTransacao . ""; 
                echo $sql.'<br>';
                $result = odbc_exec($this->bd_ingres, $sql);
                while(odbc_fetch_row($result)) {
                    $this->tistrn_con_cod = trim(odbc_result($result, 'con_cod'));
                    $this->tistrn_tabela = trim(odbc_result($result, 'tistrn_tpo'));
                    $this->tistrn_num_ori = trim(odbc_result($result, 'tistrn_num_ori'));
                    $this->tistrn_num_ori_prr = trim(odbc_result($result, 'tistrn_num_ori_prr'));   
                }
            }
            
            // gambiarra para não negar, depois retirar isso
            $cancelar = $this->gambiarra_erro_negando_unimed($result_xml,$this->statusSolicitacao);
            
            if(($this->statusSolicitacao == 1 || $this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){ // autorizado negado cancelado

                $servicoAutorizado = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados;

                $total_proc = count($servicoAutorizado->servicoAutorizado);

                if($total_proc > 1){
                    $servicoAutorizado = $servicoAutorizado->servicoAutorizado;
                }
                
                //print_r($servicoAutorizado);
                foreach($servicoAutorizado as $proc){ //print_r($proc);

                    $codigo = $proc->procedimento->codigoProcedimento;
                    $nome = substr(strtoupper($proc->procedimento->descricaoProcedimento),0,35);
                    $tipoTabela = $proc->procedimento->codigoTabela;
                    $quantidadeAutorizada = $proc->quantidadeAutorizada;
                    $valorAutorizado = 0; 
                    $descricaoGlosa = '';

                    if(isset($proc->valorAutorizado))
                            $valorAutorizado = $proc->valorAutorizado;

                    if(isset($proc->motivosNegativa->motivoNegativa) && is_array($proc->motivosNegativa->motivoNegativa)){ 
                        foreach($proc->motivosNegativa->motivoNegativa as $neg){
                            $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                        }
                    }else if(isset($proc->motivosNegativa->motivoNegativa)){
                        $descricaoGlosa = $proc->motivosNegativa->motivoNegativa->descricaoGlosa;
                    }else if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa)){
                        if(is_array($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa)){ 
                            foreach($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa as $neg){
                                $descricaoGlosa .= $neg->descricaoGlosa.'; ';
                            }
                        }else{ 
                            if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa))
                                $descricaoGlosa .= $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa.'; '; 
                        } 
                    }
                    $descricaoGlosa = xml::removeCaracteres($descricaoGlosa);
                    
                    // correção por que unimed manda diasAutorizado zerado, assim pega no procedimento, depois que unimed arrumar tirar esse código
                    if(strlen($this->diasAutorizado) == 0){
                        if($quantidadeAutorizada > 0) $this->diasAutorizado = $quantidadeAutorizada;
                    } 
                    
                    // sql
                }

            }

            // autorizado
            if($this->statusSolicitacao == 1){ // autorizado

                // sql
                $UPDATE_operadora = "UPDATE tisintprr set tisintprr_sta='A', tisintprr_sta_xml=9, tisintprr_dat_ret='" . date('dmY') . "', tisintprr_hor_ret='" . date('hi') . "' ";
                

                if(strlen($this->diasAutorizado) > 0) {
                    $UPDATE_operadora .= " ,tisintprr_qtd_aut=" . $this->diasAutorizado . " ";
                }

                if(strlen($this->tipoAcomodacao) > 0) {
                    $UPDATE_operadora .= " ,tisintprr_tpo_aco_aut='" . $this->tipoAcomodacao . "' ";
                }
                
                if (strlen($this->senhaAutorizacao) > 0) {
                    $UPDATE_operadora .= ",tisintprr_snh='" . $this->senhaAutorizacao . "' ";
                }

                $UPDATE_operadora.=" WHERE tisint_num = " . $this->tistrn_num_ori . " AND tisintprr_num = ".$this->tistrn_num_ori_prr . " AND tisintprr_sta <> 'C'";
                echo $UPDATE_operadora.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $UPDATE_operadora);
                $commit = odbc_commit($this->bd_ingres);
                
                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'A', tistrn_dat_ret = '" . date('dmY') . "'  
                                WHERE con_cod = " . $this->tistrn_con_cod . "   
                                AND tistrn_num  = " . $this->sequencialTransacao;
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);

                $this->parecer('PRR',$this->tistrn_num_ori ,$this->observacao,$this->tistrn_num_ori_prr);
                
            }
            // negado
            else if( ($this->statusSolicitacao == 3 || $this->statusSolicitacao == 6) && $cancelar == TRUE){  // negado cancelado 
                // sql
                $negado = "UPDATE tisintprr SET tisintprr_sta = 'N', tisintprr_sta_xml = 9, tisintprr_obs_aut='" . $descricaoGlosa . "' 
                            WHERE tisint_num = " . $this->tistrn_num_ori . "  
                            AND tisintprr_num = " . $this->tistrn_num_ori_prr;
                echo $negado.'<br>';
                $up_op_negado = odbc_exec($this->bd_ingres, $negado);
                $commit = odbc_commit($this->bd_ingres);

                $updTistrn = "UPDATE tistrn SET tistrn_sta = 'N', tistrn_dat_ret = '" . date('dmY') . "' 
                                WHERE con_cod = " . $this->tistrn_con_cod . "  
                                AND tistrn_num = " . $this->sequencialTransacao;    
                echo $updTistrn.'<br>';
                $up_ope_commit = odbc_exec($this->bd_ingres, $updTistrn);
                $commit = odbc_commit($this->bd_ingres);   
                
                $this->parecer('PRR',$this->tistrn_num_ori ,$this->observacao,$this->tistrn_num_ori_prr);
                
            }  
        }
    }
    
    public function parecer($tpo,$num,$parecer = '',$num2 = 0){
        $query = '';
        $result = '';
        $num_temp = '';
        $valida = FALSE;
        
        if(strpos($parecer,self::$parecer) !== FALSE) {
            $parecer = explode(self::$parecer, $parecer);
            $parecer = $parecer[1];
            
            $valida = TRUE;
        }
        
        if(strlen($parecer) > 0 && $valida == TRUE){
            
            $parecer = xml::removeCaracteres($parecer);
            
            if($tpo == 'INT'){

                $query = "SELECT * FROM tisintret WHERE tisint_num = ".$num." ";
                $result = odbc_exec($this->bd_ingres, $query); 
                while(odbc_fetch_row($result)) $num_temp = odbc_result($result, 'tisint_num');

                if($num_temp > 0) $query = "UPDATE tisintret SET tisintret_obs = '".$parecer."' WHERE tisint_num = ".$num." ";
                else $query = "INSERT INTO tisintret(tisint_num,fil_cod,emp_cod,tisintret_obs) values(".$num.",1,1,'".$parecer."') ";

            } else if($tpo == 'SDT'){

                $query = "SELECT * FROM tissdtret WHERE tissdt_num = ".$num." ";
                $result = odbc_exec($this->bd_ingres, $query); 
                while(odbc_fetch_row($result)) $num_temp = odbc_result($result, 'tissdt_num');

                if($num_temp > 0) $query = "UPDATE tissdtret SET tissdtret_obs = '".$parecer."' WHERE tissdt_num = ".$num." ";
                else $query = "INSERT INTO tissdtret(tissdt_num,fil_cod,emp_cod,tissdtret_obs) values(".$num.",1,1,'".$parecer."') ";

            } else if($tpo == 'PRR'){
                $query = "UPDATE tisintprr SET tisintprr_obs_ret = '".$parecer."' WHERE tisint_num = ".$num." AND tisintprr_num = ".$num2." ";
            }

            if($query > ''){
                echo $query.'<br>';
                $result = odbc_exec($this->bd_ingres,$query);
            }
        }
        
        return $result;
    }
    
    public function gambiarra_erro_negando_unimed($result_xml,$statusSolicitacao){
        $cancelar = TRUE;
         
        $arr_err = array('310','288','27','160','17','133');
        
        if($statusSolicitacao == 1) return $cancelar; // se for status de autorizado habilita 

        
        $hoje = strtotime(date('Y-m-d'));
        $data = strtotime($this->tistrn_dat);
        
        // Calcula a diferença em segundos entre as datas
        $diferenca = $hoje - $data;

        //Calcula a diferença em dias
        $dias = floor($diferenca / (60 * 60 * 24)); 
        //echo '<br><br>Dias:'.$dias.' - '.$this->tistrn_dat.'<br><br>';
        // se for maior que 15 dias libera a atulização idependente do retorno
        if($dias > 14) // 15
        {
            return $cancelar;
        }

 
        // não pode negar se cai nessa glosa, pois é erro unimed
        // sadt retorno envio - nivel cabeçalho
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoServico->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoServico->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //if($codigoGlosa == 310 || $codigoGlosa == 288 || $codigoGlosa == 27 || $codigoGlosa == 160) $cancelar = FALSE;
            //echo 'status S = '.$cancelar.'<br>';
        }
        // sadt retorno envio - nivel procedimentos
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoServico->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoServico->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S = '.$cancelar.'<br>';
        }
        // sadt retorno status
        if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoServico->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S S = '.$cancelar.'<br>';
        }
        // status dentro procedimentos  - nivel procedimento
        if(isset($result_xml->situacaoAutorizacao->autorizacaoServico->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoServico->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S SV = '.$cancelar.'<br>';
        }
                
        
        
        // internação retorno envio - nivel cabeçalho
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status I = '.$cancelar.'<br>';
        } 
        // internação retorno envio - nivel procedimentos
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status I = '.$cancelar.'<br>';
        } 
        // internação retorno status
        if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;           
            //echo 'status S I = '.$cancelar.'<br>';
        } 
        // status dentro procedimentos  - nivel procedimento
        if(isset($result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoInternacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S I = '.$cancelar.'<br>';
        }
        
        
        
        // vinculada internação retorno envio - nivel cabeçalho
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S VI = '.$cancelar.'<br>';
        }
        // vinculada internação retorno envio - nivel procedimento
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S VI = '.$cancelar.'<br>';
        }
        // vinculada internação retorno status  - nivel cabeçalho
        if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S SVI = '.$cancelar.'<br>';
        }
        // dentro procedimentos  - nivel procedimento
        if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S SVI = '.$cancelar.'<br>';
        }
        
        
        
        // prorrogação retorno envio - nivel cabeçalho
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status P = '.$cancelar.'<br>';
        }
        // prorrogação retorno envio - nivel procedimentos
        if(isset($result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->autorizacaoProcedimento->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status P = '.$cancelar.'<br>';
        }
        // prorrogação retorno status
        if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;         
            //echo 'status S P = '.$cancelar.'<br>';
        }
        // dentro procedimentos  - nivel procedimento
        if(isset($result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->descricaoGlosa)){
            $codigoGlosa = $result_xml->situacaoAutorizacao->autorizacaoProrrogacao->autorizacaoDosServicos->servicosAutorizados->servicoAutorizado->motivosNegativa->motivoNegativa->codigoGlosa;
            if(array_search($codigoGlosa, $arr_err) !== FALSE) $cancelar = FALSE;
            //echo 'status S P = '.$cancelar.'<br>';
        }
        
        
        return $cancelar;
                
         
    }
    
    //depois retirar quando douglas dar retorno
    public function gambiarra_erro_opme_generica_unimed($numeroGuiaPrestador,$statusSolicitacao,$servicoAutorizado){
        
        $cancelar = TRUE;
        
        // int
        $query = "SELECT tisint_num
                FROM tisintopm
                WHERE tisintopm_cod_opm_sol in(99999943,99999935) AND tisintopm_sta <> 'C' AND tisint_num = ".$numeroGuiaPrestador;
        
        $result = odbc_exec($this->bd_ingres, $query);
        while(odbc_fetch_row($result)){
            echo 'encontrou opme generica int - gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed<br>';
            $cancelar = FALSE;
            break;
            //return $cancelar;
        }
        
        // sadt
        $query = "SELECT tissdt_num
                 FROM tissdtopmsol
                 WHERE tissdtopmsol_cod in(99999943,99999935) AND tissdtopmsol_sta <> 'C' AND tissdt_num = ".$numeroGuiaPrestador;            
        $result = odbc_exec($this->bd_ingres, $query);
        while(odbc_fetch_row($result)){
            echo 'encontrou opme generica sadt - gambiarra para não autorizar automático, depois tirar quando douglas dar retorno da correção do fornecedor da unimed<br>';
            $cancelar = FALSE;
            break;
            //return $cancelar;
        }
        
        
        if($statusSolicitacao == 1 && $cancelar == FALSE){ // esta autorizado e tem opme generica
            foreach($servicoAutorizado as $proc){ //print_r($proc);

                $codigo = $proc->procedimento->codigoProcedimento;
                $nome = $proc->procedimento->descricaoProcedimento;
                $tipoTabela = $proc->procedimento->codigoTabela;
                $quantidadeSolicitada = $proc->quantidadeSolicitada;
                $quantidadeAutorizada = $proc->quantidadeAutorizada;
                $valorSolicitado = $proc->valorSolicitado;
                $valorAutorizado = @$proc->valorAutorizado;

                echo 'Valor: '.$valorAutorizado.'<br>';
                
                // te existir um produto com valor liberar aupdate
                if($quantidadeAutorizada > 0){ echo 'tem quantidadeAutorizada'.$quantidadeAutorizada.'<br>';
                    if($valorAutorizado > 0){ 
                        echo 'TRUE<br>';
                        $cancelar = TRUE;
                    }

                }     
            }
        }
        
        return $cancelar;
    }
    
    public function procurarDiaria($desc, $aut){      
        $find = 'DIARIA';
        $diaria = '';
        if(stripos($desc, $find) !== FALSE){
            echo 'Achou Diárias = '.$aut.'<br>';
            $diaria = $aut;
        }     
        return $diaria;
    }
}

?>

 